package com.hardy.leecode;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

/**
 * Author: Hardy
 * Date:   2020/10/28
 * Description:
 * -
 * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
 * <p>
 * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：arr = [1,2,2,1,1,3]
 * 输出：true
 * 解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
 * 示例 2：
 * <p>
 * 输入：arr = [1,2]
 * 输出：false
 * 示例 3：
 * <p>
 * 输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
 * 输出：true
 **/
public class Que1207 {

    public static void main(String[] args) {
        int[] arr = {1, 2, 2, 1, 1, 3};

        System.out.println(new Solution().uniqueOccurrences(arr));
    }

    static class Solution {

        public boolean uniqueOccurrences(int[] arr) {
            HashMap<Integer, Integer> map = new HashMap<>();
            for (int a : arr) {
                map.put(a, map.getOrDefault(a, 0) + 1);
            }

            Set<Integer> set = new HashSet<>();
            for (int a : map.values()) {
                if (set.contains(a)) return false;
                set.add(a);
            }
            return true;
        }
    }
}
